#ifndef FOUNDATION_SYSTEM_SERVER_INCLUDE_SYSTEM_SERVER_H
#define FOUNDATION_SYSTEM_SERVER_INCLUDE_SYSTEM_SERVER_H

namespace El {
namespace SystemServer {

class SystemServer {
public:
    /**
     * @brief 获取SystemServer单例实例
     * @return SystemServer实例引用
     */
    static SystemServer &GetInstance();

    /**
     * @brief 启动系统服务
     * @return 成功返回true，失败返回false
     */
    bool Start();

    /**
     * @brief 停止系统服务
     * @return 成功返回true，失败返回false
     */
    bool Stop();

    /**
     * @brief 配置网络接口为DHCP模式
     * @param interfaceName 网络接口名称
     * @return 成功返回true，失败返回false
     */
    bool ConfigureNetworkDhcp(const std::string &interfaceName);

    /**
     * @brief 配置网络接口为静态IP模式
     * @param interfaceName 网络接口名称
     * @param ipAddress IP地址
     * @param netmask 子网掩码
     * @param gateway 网关地址
     * @return 成功返回true，失败返回false
     */
    bool ConfigureNetworkStatic(const std::string &interfaceName,
                              const std::string &ipAddress,
                              const std::string &netmask,
                              const std::string &gateway);

    /**
     * @brief 配置DNS服务器
     * @param primaryDns 主DNS服务器
     * @param secondaryDns 备用DNS服务器
     * @return 成功返回true，失败返回false
     */
    bool ConfigureDnsServers(const std::string &primaryDns,
                           const std::string &secondaryDns = "");

private:
    SystemServer() = default;
    ~SystemServer() = default;
    SystemServer(const SystemServer &) = delete;
    SystemServer &operator=(const SystemServer &) = delete;

    void InitNetwork();
};

} // namespace SystemServer
} // namespace El

#endif // FOUNDATION_SYSTEM_SERVER_INCLUDE_SYSTEM_SERVER_H
